/**
 * 用户相关类型定义
 */

// 用户基础信息
export interface User {
  id: number
  username: string
  nickname?: string
  email?: string
  mobile?: string
  avatar?: string
  gender?: number // 0: 未知, 1: 男, 2: 女
  birthday?: string
  motto?: string // 个人签名
  score?: number // 积分
  money?: number // 余额
  group_id?: number
  status?: number // 用户状态
  create_time?: number
  update_time?: number
  last_login_time?: number
}

// 登录参数
export interface LoginParams {
  tab: 'login'
  username: string
  password: string
  keep?: boolean // 记住登录
  captcha?: string
  captchaId?: string
  captchaInfo?: string
}

// 注册参数
export interface RegisterParams {
  tab: 'register'
  username: string
  password: string
  email: string
  captcha: string
  registerType?: 'email' | 'mobile'
  mobile?: string
  captchaId?: string
  captchaInfo?: string
}

// 找回密码参数
export interface ForgotPasswordParams {
  type: string
  account: string
  captcha: string
  password: string
  confirmPassword?: string
}

// 修改密码参数
export interface ChangePasswordParams {
  oldPassword: string
  newPassword: string
}

// 用户信息更新参数
export interface UpdateProfileParams {
  id?: number
  avatar?: string
  username?: string
  nickname?: string
  gender?: number
  birthday?: string
  motto?: string
}

// 绑定信息修改参数
export interface ChangeBindParams {
  email: string
  captcha: string
  accountVerificationToken?: string
  password?: string
}

// 验证账户参数
export interface VerificationParams {
  email: string
  captcha: string
}

// 登录响应
export interface LoginResponse {
  userInfo?: User
  user?: User  // 兼容不同的响应格式
  routePath?: string
  token?: string
  refreshToken?: string
  [key: string]: any  // 允许其他字段
}

// 用户概览数据
export interface UserOverview {
  days: string[]
  score: number[]
  money: number[]
}

// 积分日志
export interface ScoreLog {
  id: number
  user_id: number
  score: number
  before: number
  after: number
  memo: string
  create_time: number
}

// 余额日志
export interface MoneyLog {
  id: number
  user_id: number
  money: number
  before: number
  after: number
  memo: string
  create_time: number
}

// 物品详细信息（收藏关联的对象）- 匹配后端返回的数据结构
export interface FavoriteObject {
  id: number
  object_id: number
  object_name: string
  category_id: number
  grade: number
  length: number
  width: number
  weight: number
  pic: string
  pre_pic: string
  desc: string
  create_time: string
  update_time: string
  delete_time: string | null
  avg_price: number
}

// 收藏项 - 匹配后端返回的数据结构
export interface FavoriteItem {
  id: number
  user_id: number
  object_id: number
  object_type: string
  create_time: string // 后端返回的是字符串格式时间
  update_time: string
  object?: FavoriteObject // 关联的对象数据
}

// 收藏列表查询参数
export interface FavoritesQueryParams {
  page?: number
  limit?: number
  pageSize?: number
  type?: string
  search?: string // 搜索关键词
  sort?: 'create_time' | 'object_name' | 'avg_price' // 排序字段
  order?: 'asc' | 'desc' // 排序方向
  grade?: number // 物品等级筛选
  category_id?: number // 分类筛选
}

// 收藏列表响应 - 匹配后端返回的数据结构
export interface FavoritesResponse {
  list: FavoriteItem[]
  total: number
  last_page: number
}

// 收藏统计信息
export interface FavoritesStats {
  total: number
  by_grade: Record<number, number>
  by_category: Record<number, number>
  total_value: number // 总价值（基于平均价格）
}

// 批量收藏状态
export interface BatchFavoritesResponse {
  favorites: Record<string, boolean>
}

// 登录日志
export interface LoginLog {
  id: number
  user_id: number
  username: string
  statu: string // 1: 成功, 0: 失败
  ip: string
  device: string
  os: string
  browser: string
  useragent: string
  failure_reason?: string
  login_time: number
  create_time: number
}

// 用户状态枚举
export enum UserStatus {
  NORMAL = 1,
  DISABLED = 0
}

// 性别枚举
export enum Gender {
  UNKNOWN = 0,
  MALE = 1,
  FEMALE = 2
}

// 验证类型
export type VerificationType = 'email'
